#include<stdio.h>
#include<signal.h>
#include<unistd.h>
void printPending(sigset_t *pending)
{
  int i=0;
  for(i=1;i<=31;i++)
  {
    if(sigismember(pending,i))
    {
      printf("1 ");
    }
    else 
    {
      printf("0 ");
    }
  }
  printf("\n");
}

void handler(int signo)
{
  printf("get a %d signo \n",signo);
}

int main()
{
  signal(2,handler);
  sigset_t s,oset;//用户空间定义的变量
  sigemptyset(&s);  
  sigemptyset(&oset);//清空

  sigaddset(&s,2);//将2号信号添加到信号集
  sigprocmask(SIG_SETMASK,&s,&oset);//阻塞了2号信号
  
  sigset_t pending;
  int count=0;
  while(1)
  {
    sigemptyset(&pending);
    sigpending(&pending);

    printPending(&pending);
    sleep(1);
    count++;
    if(count==20)
    {
      sigprocmask(SIG_SETMASK,&oset,NULL);
    }
  }

  return 0;
}
